﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MailServer.Message {
    /// <summary>
    /// Clase Mensaje
    /// </summary>
    [Serializable]
    public class Message {
        private FromTo fromTo;
        private Data data;

        /// <summary>
        /// Almacena toda la informacion relacionada a un mensaje de correo individual
        /// </summary>
        /// <param name="from">Nombre del Enviador</param>
        /// <param name="to">Nombre del Destinatario</param>
        /// <param name="subject">El Asunto del Correo</param>
        /// <param name="body">El Texto del Mensaje</param>
        public Message(long identifier, string from, string to, string subject, string body, int status) {
            this.fromTo = new FromTo(from, to);
            this.data = new Data(identifier, subject, body, status);
        }

        public bool CheckFrom(string from) {
            return fromTo.CheckFrom(from);
        }

        public bool CheckTo(string to) {
            return fromTo.CheckTo(to);
        }

        public bool CheckIdentifier(long identifier) {
            return data.CheckIdentifier(identifier);
        }

        public bool CheckStatus(int status) {
            return data.CheckStatus(status);
        }

        /// <summary>
        /// Metodo para obtener el mensaje
        /// </summary>
        /// <returns>Devuelve el mensaje en un string</returns>
        public override string ToString() {
            return fromTo.ToString() + Environment.NewLine +
                   data.ToString();
        }

    }
}
